package acwing_02;

import java.util.Scanner;
import java.util.Stack;

public class _830_单调栈 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Stack<Integer> stk = new Stack<Integer>();
		int n = scan.nextInt();
		for(int i = 0; i < n; i++) {
			int j = scan.nextInt();
			// 如果栈顶元素比j大，说明该元素永远不会是后面元素的最近最小的值。
			// 因为该元素比j大，如果后续元素选最近最小值 最迟到j就能得到结果。所以我们后续再也用不到该值，直接弹出即可
			while(!stk.isEmpty() && stk.peek() >= j) {
				stk.pop();
			}
			// 如果栈不是空，此时栈顶元素就一定是与j最近且小于j的元素
			if(!stk.isEmpty()) {
				System.out.print(stk.peek() + " ");
			} else {
				System.out.print("-1 ");
			}
			stk.add(j);
		}
		
		scan.close();
	}
}
